package com.dd.cloud.user.service.doctor;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dd.cloud.user.entity.doctor.DoctorWithdrawRecord;
import com.dd.cloud.user.req.doctor.DoctorWithdrawIncomeReq;
import com.dd.cloud.user.req.doctor.DoctorWithdrawPaymentReq;
import com.dd.cloud.user.req.doctor.DoctorWithdrawRecordPageReq;
import com.dd.cloud.user.req.doctor.DoctorWithdrawRecordPageSystemReq;
import com.dd.cloud.user.res.doctor.DoctorWithdrawRecordDetailRes;
import com.dd.cloud.user.res.doctor.DoctorWithdrawRecordPageRes;
import com.dd.cloud.user.res.doctor.DoctorWithdrawRecordPageSystemRes;

import javax.servlet.http.HttpServletResponse;

/**
 * @author Lx
 * @version 1.0
 */
public interface IDoctorWithdrawRecordService extends IService<DoctorWithdrawRecord> {
    /**
     * 医生申请提现收入
     *
     * @param req
     */
    void doctorWithdrawIncome(DoctorWithdrawIncomeReq req);

    /**
     * 医生查询提现记录
     *
     * @param req
     * @return
     */
    IPage<DoctorWithdrawRecordPageRes> queryDoctorWithdrawRecordPage(DoctorWithdrawRecordPageReq req);

    /**
     * 查询提现记录详情
     *
     * @param withdrawNo
     * @return
     */
    DoctorWithdrawRecordDetailRes queryDoctorWithdrawRecordDetail(String withdrawNo);

    /**
     * 查询所有医生提现记录 运营后台
     *
     * @param req
     * @return
     */
    IPage<DoctorWithdrawRecordPageSystemRes> queryDoctorWithdrawRecordPageSystem(DoctorWithdrawRecordPageSystemReq req);

    /**
     * 查询所有医生提现记录 运营后台 导出excel
     *
     * @param response
     * @param req
     * @return
     */
    void exportDoctorWithdrawRecordPageSystemExcel(HttpServletResponse response, DoctorWithdrawRecordPageSystemReq req);

    /**
     * 查询单个医生提现记录 运营后台 导出excel
     *
     * @param response
     * @param req
     * @return
     */
    void exportSingleDoctorWithdrawRecordPageSystemExcel(HttpServletResponse response, DoctorWithdrawRecordPageSystemReq req);

    /**
     * 医生申请提现 后台打款
     *
     * @param req
     */
    void doctorWithdrawPayment(DoctorWithdrawPaymentReq req);

    /**
     * 处理线上收益状态
     */
    void testIncomeTest();

    /**
     * 处理退款状态
     */
    void testIncomeTest01();
}
